package com.ktjiaoyu.crm;

import com.ktjiaoyu.crm.entity.User;
import com.ktjiaoyu.crm.repository.UserRepository;
import com.ktjiaoyu.crm.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RunWith(SpringRunner.class)
 @SpringBootTest
public class UserRepositoryTester {

 @Resource
 private UserRepository userRepository;
@Test
 public void testInsert(){//测试新增
   User user = new User("JPA","123456",8L,1);
   userRepository.save(user);
   }

    @Test
     public void testGet(){//测试按主键查询
       //User user = userRepository.getOne(2L);//不是使用该方法
      User user = (User) userRepository.findById(2L).get();
         System.out.println("usrName："+user.getUsrName());
       }
      @Test
       public void test(){
           List<User> list = userRepository.findByUsrNameLike("%s%");//查询参数必须带%号
           for (User user : list) {
               System.out.println("userName:"+user.getUsrName());
           }
       }

      @Test
    public void delet(){
        List<User>list=userRepository.findByRoleId(2L);
          for (User user : list) {
              System.out.println(user.getUsrName());
          }

       }
@Test
       public void delandupd(){
    int a=userRepository.modifyNameById("test1",4L);
    if(a>0){
        System.out.println("修改成功");
    }else {
        System.out.println("修改失败");
    }
       }

       @Test
       public void test2(){
       List<User>list=userRepository.findByUsrName("test");
           for (User user : list) {
               System.out.println("user"+user.toString());
           }
       }
       @Test
       public void testFindPageByUsrRoleId(){ //测试按角色查询用户并分页
       int page=0,size=2;//分页要素，页数从0开始
       //控制分页数据的排序，可以选择升序和降序
           Sort sort =Sort.by(Sort.Direction.DESC,"usrId");
           Pageable pageable = PageRequest.of(page, size, sort);
           Page<User> userPage = userRepository.findPageByUsrRoleId(8L,  pageable);
           System.out.println("总记录数:"+userPage.getTotalElements());
           System.out.println("总页数:"+userPage.getTotalPages());
           System.out.println("当前页数:"+(userPage.getNumber()+1));
           System.out.println("每页记录数:"+userPage.getSize());
           System.out.println("当前页记录数:"+userPage.getNumberOfElements());
           for (User user : userPage) {
               System.out.println("usrId:"+user.getUsrId());
           }

       }
    @Test
    public void testFindPageByMap(){
        int page=0,size=2;//分页要素
        //控制分页数据的排序，可以选择升序和降序
        Sort sort = Sort.by(Sort.Direction.DESC, "usrId");
        //控制分页的辅助类，可以设置页码、每页的数据条数、排序等
        Pageable pageable = PageRequest.of(page, size, sort);
        Map param = new HashMap();
        param.put("roleId",8L); //测试一个查询条件，也可不给或给多个
        UserService userService;
        Page<User> userPager = userRepository.findPageByUsrRoleId(8L,  pageable);
        System.out.println("总记录数 --------> " + userPager.getTotalElements());
        System.out.println("总页数 ----------> " + userPager.getTotalPages());
        System.out.println("当前页数 --------> " + userPager.getNumber());
        System.out.println("每页记录数 ------> " + userPager.getSize());
        System.out.println("当前记录： ------> ");
        for(User user:userPager.getContent()){//获得查询记录
            System.out.println("usrId："+user.getUsrId());
        }
    }

}
